﻿using Ext.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;

namespace EntGuayasSLA.BL
{

    public static class GetSessionPage
    {
        public static string ExpedienteId(string idPageSession)
        {
           
                try
                {
                    return (HttpContext.Current.Session[idPageSession+Constantes.Expediente].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session ExpedienteId [" + idPageSession + Constantes.Expediente + "] Invalido");
                    return "";
                }
               
            

        }
        public static string ExpedienteLic(string idPageSession)
        {
           try
                {
                    return (HttpContext.Current.Session[idPageSession + Constantes.ExpedienteLic].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session  ExpedienteLic [" + idPageSession + Constantes.ExpedienteLic + "] Invalido");
                    return "";
                }
               
            

        }             
        public static string GetSession(string CodefaseId)
        {
            try
            {
                if (string.IsNullOrEmpty(CodefaseId))
                    throw new System.InvalidOperationException("Id de Session Invalido");
                if (CodefaseId.Substring(0,2)!="PG")
                    throw new System.InvalidOperationException("Id de Session ["+CodefaseId+"] Invalido");
                if (HttpContext.Current.Session[CodefaseId] != null)
                {
                    return (HttpContext.Current.Session[CodefaseId].ToString());
                }
                else
                {
                    //Caso Id de Session [PGEXPLIC0001TMP_LIC] LFaseTmp=TMP_LIC puede ser vacio
                    if (CodefaseId.IndexOf(Constantes.LFaseTmp) != -1)
                    {
                        return "";
                    }
                    else
                    {
                        // Id de Session [PGEXPLIC0001FASE_ID_CAT_LIC] Invalido
                        if (CodefaseId.IndexOf(Constantes.LCategorizacion) != -1 && CodefaseId.IndexOf(SessionPage.PageGestionExpLic) != -1)
                        {
                            return "";
                        }
                        else
                        {
                            if (CodefaseId.IndexOf(SessionPage.PageGestionExpLic) != -1)
                            {
                                return "";
                            }
                            else
                            {
                                throw new System.InvalidOperationException("Id de Session [" + CodefaseId + "] Invalido");
                            }
                        }
                    }
                }

            }
            catch (Exception argEx)
            {
                X.Call("AppGlobalJs.controlSesion");
                throw argEx;
                return "";
            }

        }
    }
    public static class GetSessionUsuario
    {
        public static  string UsuarioId
        {
            get
            { 
                try
                {
                    return (HttpContext.Current.Session[Constantes.UsuarioId].ToString());
                 }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session UsuarioId [" + Constantes.UsuarioId + "] Invalido");
                    
                    return "";
                }
               
            }
        }
        public static string UsuarioRolCodigo
        {
            get
            {
                try
                {
                    return (HttpContext.Current.Session[Constantes.UsuarioRolCodigo].ToString());
                 }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session UsuarioRolCodigo [" + Constantes.UsuarioRolCodigo + "] Invalido");
                    return "";
                }
                
            }

        }
        public static string UsuarioRol
        {
            get
            { 
                try
                {
                    return (HttpContext.Current.Session[Constantes.UsuarioRol].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session UsuarioRol [" + Constantes.UsuarioRol + "] Invalido");
                    return "";
                }
                
            }

        }
        public static string UsuarioRolId
        {
            get
            {
                try
                {
                    return (HttpContext.Current.Session[Constantes.UsuarioRolId].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session UsuarioRolId [" + Constantes.UsuarioRolId + "] Invalido");
                    return "";
                }
               
            }

        }
        public static string UsuarioRolNombre
        {
            get
            {
                try
                {
                    return (HttpContext.Current.Session[Constantes.UsuarioRolNombre].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session UsuarioRolNombre [" + Constantes.UsuarioRolNombre + "] Invalido");
                    return "";
                }
              
            }

        }
        public static  string PersonaId
        {
            get
            {
                try
                {
                     return (HttpContext.Current.Session[Constantes.PersonaId].ToString());
                }
                catch
                {
                    X.Call("AppGlobalJs.controlSesion");
                    throw new System.InvalidOperationException("Id de Session PersonaId [" + Constantes.PersonaId + "] Invalido");
                    return "";
                }
                
            }
        }

    }
    public class MyGetSession
    {
       
    }
    public class SetSessionPage:Page
    {
        public SetSessionPage(string idSession,string PageEvento)
        {
            HttpContext.Current.Session[idSession] = PageEvento;
        }
    }
    public class SetSessionUsuario
    {
       

        protected string usuarioId
        {
            set
            {
              HttpContext.Current.Session[Constantes.UsuarioId] = value;
            }
        }
        protected string usuarioRolCodigo
        {
           set
            {
              HttpContext.Current.Session[Constantes.UsuarioRolCodigo] = value;
            }

        }
        protected string usuarioRol
        {
             set
            {
              HttpContext.Current.Session[Constantes.UsuarioRol] = value;
            }

        }
        protected string usuarioRolId
        {
            set
            {
               HttpContext.Current.Session[Constantes.UsuarioRolId] = value;
            }

        }
        protected string usuarioRolNombre
        {
            set
            {
                  HttpContext.Current.Session[Constantes.UsuarioRolNombre] = value;
            }

        }
        protected string personaId
        {
            set
            {
                 HttpContext.Current.Session[Constantes.PersonaId] = value;
            }
        }
        public SetSessionUsuario(string Id,string Login,string RolNombre,string RolId,string RolCodigo,string PersonaId)
        {
            this.usuarioId = Id;
            this.usuarioRolNombre = Login;
            this.usuarioRol = RolNombre;
            this.usuarioRolId = RolId;
            this.usuarioRolCodigo = RolCodigo;
            this.personaId = PersonaId;
        }
        public SetSessionUsuario()
        {}

       
    }
    public  class MySetSession
    {
        public SetSessionUsuario SessionUsuario;
        public SetSessionPage SessionPage;
        public MySetSession()
        {
            SessionUsuario= new SetSessionUsuario();
        }
      

    }
    public class MyCustomSession
    {

    }
}
